<?php 
namespace Common\Model;
use Hdphp\Model\Model;
/**
 * 分类category模型
 */
class Category extends Model{
	// 指定Category操作的数据库表category
	protected $table='category';
	// 设置过滤的属性
	protected $validate=array(
		array('cname','required','分类名不能为空',3,3),
		);
	/**
	 * 添加分类数据
	 */
	public function store(){
		if (!$this->create()) return false;
		//如果$this->add方法不传入数据，会自动获取$this->data里面的数据写入数据库
		//$this->data是框架自带的方法 和 $validata一样 里面是POST传输过来的所有数据
		return $this->add(); 
	}
	/**
	 * 获取添加分类的下拉列框是获取的其他分类 不能是其本身和其子类
	 */
	public function getFdata($data,$cid){
		// 运行getson方法
		$cids=$this->getson($data,$cid);
		// 将其本身也压入数组
		$cids[]=$cid;
		// 获取除数组$cids外的所有分类名称
		$res=$this->whereNotIn('cid',$cids)->get();
		// 将其以树状分配显示
		return Data::tree($res,'cname');
	}
	/**
	 * 递归循环，取出所有符合条件的cid
	 */
	public function getson($data,$cid){
		$tmp=array();
		// 循环遍历，将其本身的子类 全部压入数组$tmp
		foreach($data as $k=>$v){
			// 数据中有pid，并且与$cid相等的数据 就是其子类
			if ($v['pid']==$cid) {
				// 将数据压入数组
				$tmp[]=$v['cid'];
				// 合并数组，将所有满足的Cid压入给$tmp
				$tmp=array_merge($tmp,$this->getson($data,$v['cid']));
			}
		}
		// 返出结果
		return $tmp;
	}
	/**
	 * 修改分类数据方法
	 */
	public function edit(){
		if (!$this->create()) return false;
	// save()方法中如果post条件中包含主键，自动会修改主键对应的条目
		return $this->save();
	}
	/**
	 *  删除分类方法
	 */
	public function del($cid){
		// pluck获取指定的字段----模型方法
		$pid=$this->where('cid',$cid)->pluck('pid');
		// 获取到pid后把它的所有子类的pid改为父级的cid
		$this->where('pid',$cid)->update(array('pid'=>$pid));
		// 删除点击的数据
		return $this->where('cid',$cid)->delete();
	}
}



 ?>